Skip to content

Add submission evaluation models#667

Merged
TThanos3000 merged 2 commits into
masterfrom
feature/submission-evaluation-models
Jul 26, 2026
Merged

Add submission evaluation models#667
TThanos3000 merged 2 commits into
masterfrom
feature/submission-evaluation-models

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Jul 26, 2026

Copy link
Copy Markdown
Collaborator

Что изменено

Добавлен базовый слой данных для оценивания зафиксированных Submission.

Реализованы модели:

  • SubmissionExpertAssignment — назначение эксперта на конкретную Submission;
  • Evaluation — единая форма оценки эксперта;
  • EvaluationScore — числовая оценка по отдельному критерию.

Также добавлены:

  • миграция 0023_submission_evaluation_models;
  • ограничения уникальности и согласованности статусов;
  • индексы для основных выборок;
  • регистрация моделей в Django Admin;
  • 18 модельных тестов;
  • обновление документации экспертного контура.

Основные решения

  • эксперт оценивает Submission, а не изменяемый Project;
  • legacy-модели ProjectScore и ProjectExpertAssignment не изменялись;
  • существующий project_rates.Criteria временно используется как каталог критериев;
  • поддерживаются только числовые критерии int и float;
  • параметры критерия сохраняются в snapshot-полях EvaluationScore;
  • total_score пока не рассчитывается;
  • используется существующий datetime_evaluation_ends;
  • API и lifecycle service в этот PR не входят.

Ограничения базы данных

Добавлены:

  • частичная уникальность активного или завершенного назначения по submission + expert;
  • уникальность Evaluation по submission + expert;
  • уникальность EvaluationScore по evaluation + criterion;
  • проверка соответствия статуса назначения полям completed_at и revoked_at;
  • проверка соответствия статуса Evaluation полю submitted_at.

Cross-table проверки будут добавлены в отдельном транзакционном service:

  • принадлежность Criteria программе;
  • участие эксперта в программе;
  • наличие активного назначения;
  • допустимый статус Submission;
  • проверка значения по диапазону Criteria.

Проверки

Успешно выполнены:

  • manage.py check --tag models;
  • makemigrations --check --dry-run --skip-checks;
  • Flake8 измененных Python-файлов;
  • git diff --check;
  • проверка соответствия migration моделям;
  • проверка constraints, indexes и related names;
  • read-only проверка snapshot и Decimal-значений.

Локально не удалось выполнить 56 найденных тестов, поскольку PostgreSQL на ноутбуке не запущен и тестовая база не может быть создана.

Полный system check также блокируется отсутствующей Windows-библиотекой gobject-2.0-0, необходимой legacy-интеграции WeasyPrint.

Настройки, зависимости и тип базы данных для обхода этих ограничений не изменялись.

Не изменено

  • Application, Team и Submission API;
  • serializers, views, permissions и urls;
  • Project, ProjectScore, ProjectExpertAssignment;
  • Angular frontend и React frontend;
  • settings и зависимости;
  • Docker, nginx, deploy и workflows;
  • production.

@TThanos3000
TThanos3000 merged commit cfb63a8 into master Jul 26, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant